

package com.scs.application.modules.base.entity;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.scs.application.core.model.DataEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Date;

/**
 * 医院实体对象
 */
@TableName("hospital")
@Data
@EqualsAndHashCode(callSuper = false)
@ToString(callSuper = true)
@Accessors(chain = true)
public class Hospital extends DataEntity implements Serializable {

    /**
     * 机构ID
     */
    @JsonIgnore
    @JSONField(serialize = false, deserialize = false)
    private String officeId;

    /**
     * 医院代码
     */
//    @NotBlank(message="医院代码不能为空")
//    @Length(min=1, max=7, message="医院代码长度必须介于 1 和 7 之间")
    private String code;

    /**
     * 医院名称
     */
    @NotBlank(message = "医院名称不能为空")
    @Length(min = 1, max = 50, message = "医院名称长度必须介于 1 和 50 之间")
    private String name;

    /**
     * 登录账号
     */
    //@NotBlank(message = "登录账号不能为空")
    @Length(max = 30, message = "登录账号长度不能少于30")
    private String loginKey;

    /**
     * 简称
     */
    @Length(max = 50, message = "简称长度必须介于 0 和 50 之间")
    private String shortName;

    /**
     * 拼音
     */
    private String pinyin;

    /**
     * 区域id
     */
    private Long regionId;

    /**
     * 区域名称
     */
    private String regionName;

    /**
     * 地址
     */
    @Length(max = 200, message = "地址长度必须介于 0 和 200 之间")
    private String address;

    /**
     * 联系人
     */
    @Length(max = 50, message = "联系人长度必须介于 0 和 50 之间")
    private String contactor;

    /**
     * 邮箱
     */
    @Length(max = 50, message = "邮箱长度必须介于 0 和 50 之间")
    private String email;

    /**
     * 电话
     */
    @Length(max = 20, message = "电话长度必须介于 0 和 20 之间")
    private String phone;

    /**
     * 医疗许可证
     */
    private String certificateNo;

    /**
     * 发证机关
     */
    private String certificateOffice;

    /**
     * 有效开始日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date expStart;

    /**
     * 有效结束日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date expEnd;

    /**
     * 手机
     */
    private String mobile;

    /**
     * 医院等级
     */
    private String hospitalLevel;

    /**
     * 医院类型
     */
    private String hospitalType;

    /**
     * 医院性质
     */
    private String hospitalCharacter;

    /**
     * 床位数
     */
    private Integer bedNum;

    /**
     * 科室数
     */
    private Integer deptNum;

    /**
     * 医护人员数
     */
    private Integer staffNum;

    /**
     * 年门诊量
     */
    private Integer clinicYear;

    /**
     * 年手术量
     */
    private Integer operationYear;

    /**
     * 年耗材用量(万元)
     */
    private Double matrUseYear;

    /**
     * 占地面积
     */
    private Double area;

    /**
     * 建筑面积
     */
    private Double floorage;

    /**
     * 医院别名
     */
    private String otherNames;

    /**
     * 文档IDs
     */
    private JSONArray docIds;

    /**
     * 发票抬头-名称
     */
    private String invoiceName;

    /**
     * 发票抬头-税号
     */
    private String invoiceNo;

    /**
     * 发票抬头-单位地址
     */
    private String invoiceAddress;

    /**
     * 发票抬头-开户银行
     */
    private String invoiceBankName;

    /**
     * 发票抬头-银行账号
     */
    private String invoiceBankNo;

    /**
     * 发票抬头-电话号码
     */
    private String invoiceTel;

    /**
     * 禁止新增订单：1:订单新增时该医院不可选择
     */
    private Boolean flagDisabledOrderAdd;

    /**
     * 组织机构代码
     */
    private String oid;

    /**
     * 禁止新增订单：1:订单新增时该医院不可选择
     */
    private Boolean flagEnabledMaterialEdit;

    /**
     * 已供货商品修改说明，在编辑页面提示
     */
    private String enabledMaterialEditRemark;

}
